struct Particle
{
    float4 initialPos : POSITION;
    float4 initialVel : VELOCITY;
    float2 size : SIZE;
    //in seconds
    float currentLifetime : LIFETIME;
    uint type : TYPE;
};

#define PARTICLE_TYPE_EMIT 1
#define PARTICLE_TYPE_NORMAL 2

#define PARTICLE_GEN_INTERVAL 0.1f

struct VertexOut
{
    float3 finalPos : POSITION;
    float2 size : SIZE;
    //fade color with time
    float4 color : COLOR;
    //不渲染 Emitter
    uint type : TYPE;
};

struct GeoOut
{
    float4 position: SV_Position;
    float2 texCoord: TEXCOORD;
    float4 color: COLOR;
};
